home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / comms_w / ftpsrv10.zip / SERV-U.TXT < prev   
Text File  |  1995-02-04  |  51KB  |  1,142 lines

  1.                               
  2.                               
  3.                               
  4.                          FTP SERV-U
  5.                               
  6.                               
  7.                 FTP-Server Daemon for WinSock
  8.                               
  9.                               
  10.                         Version 1.00
  11.                               
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.                      Made by Rob Beckers
  27.                               
  28.                            Cat Soft
  29.                               
  30.                        4 February 1995
  31.  
  32.  
  33.  
  34.                               
  35.  
  36.                          DISCLAIMER
  37.                          ==========
  38.                               
  39. I  know, it's not the nicest way to start off. So let's just
  40. get this part over with, OK?!
  41.  
  42. The  FTP  server  program Serv-U and its  documentation  are
  43. copyright  of  Rob Beckers. It is distributed as  shareware,
  44. giving  you the right to try it for a period of 30 days.  If
  45. you  intend to use Serv-U after the initial try-out  period,
  46. you are obliged to pay the registration fee.
  47. The  next paragraph is a beautiful piece of prose.  In  just
  48. two  sentences  it  says it all. Alas, unfortunately  it  is
  49. necessary, so please bear with me.
  50.  
  51. This  software  is provided by the regents and  contributors
  52. 'as  is'  and any express or implied warranties,  including,
  53. but   not   limited   to,   the   implied   warranties    of
  54. merchantability  and  fitness for a particular  purpose  are
  55. disclaimed.   In no event shall the regents or  contributors
  56. be  liable  for  any direct, indirect, incidental,  special,
  57. exemplary,  or  consequential damages  (including,  but  not
  58. limited  to,  procurement of substitute goods  or  services;
  59. loss  of  use,  data, or profits; or business  interruption)
  60. however  caused and on any theory of liability,  whether  in
  61. contract, strict liability, or tort (including negligence or
  62. otherwise)  arising  in  any way out  of  the  use  of  this
  63. software, even if advised of the possibility of such damage.
  64.  
  65.  
  66.  
  67. CONTENTS
  68. ========
  69.  
  70. Introduction                                               1
  71.  
  72. 1. Making It Work - Installation                           3
  73.   1.1 Installation                                         3
  74.   1.2 De-installation                                      3
  75.  
  76. 2. The Grand Tour - Menus                                  4
  77.   2.1 The File Menu                                        4
  78.   2.2 The Edit Menu                                        4
  79.   2.3 The Setup Menu                                       4
  80.   2.4 The Help Menu                                        9
  81.   2.5 The Logfile and Screen                               9
  82.  
  83. 3. The Inner Workings                                     11
  84.   3.1 Serv-U Internals                                    11
  85.   3.2. The SERV-U.INI File                                11
  86.  
  87. 4. Getting In Touch - Bugs & Registration                 16
  88.   4.1 Reporting Bugs                                      16
  89.   4.2 Registering Serv-U                                  16
  90.  
  91. Registration Form Serv-U                                  18
  92.  
  93.  
  94.  
  95. INTRODUCTION
  96. ============
  97.  
  98. Thank you for giving this program a try!
  99.  
  100. With  FTP  Serv-U your PC will be turned into a FTP  server.
  101. This means that others on the computer network that you  are
  102. connected  to  can access your PC to copy, move,  make,  and
  103. delete files and directories, using the FTP protocol (FTP  =
  104. File  Transfer  Protocol). This protocol  dictates  standard
  105. ways  of  communicating  between  computers,  so  that  many
  106. different  types  of  computers, using  different  operating
  107. systems and file formats, can exchange information.
  108. FTP  Serv-U  is a 'server' program and/or daemon.  The  term
  109. daemon  comes from the ancient Greek mythology.  There,  the
  110. Daemons  were  half-gods, acting as messengers  between  the
  111. people  on  earth  and  the  gods.  This  FTP  server  acts,
  112. likewise,  as  a  messenger for file  transfer  between  FTP
  113. clients  and  your computer. Once started  it  sits  in  the
  114. background  waiting  for a client to contact  it  and  after
  115. communications  are  established, acting  out  the  client's
  116. commands.
  117. There  are  FTP  servers (and clients)  for  many  different
  118. systems.  This particular program is meant for PC's  running
  119. MS-Windows that have a WinSock version 1.1 compatible TCP/IP
  120. stack installed.
  121.  
  122. Why  use  this  program and not one of the  many  other  FTP
  123. servers that are available? For this I have to take you back
  124. in time a little, to about a year ago. I needed a FTP server
  125. to  make  some  files available to others and  tried  out  a
  126. number  of server programs. One simply didn't work.  Another
  127. would  work,  but as soon as someone started transferring  a
  128. file from my PC it would lock up the whole machine until the
  129. transfer  was complete. And then there was one  that  worked
  130. fine,  but lacked all but the most basic security. So, after
  131. endless  frustration I decided to write my own, figuring  it
  132. couldn't  be  that hard. As usual things got a  bit  out  of
  133. hand,  but  a year and over 10000 lines of C++ later  you're
  134. looking at the result!
  135. So what has this FTP server to offer?
  136.  
  137.      * Access for  multiple clients at the same time. Access
  138.        for 'Anonymous' users. With the possibility to  limit
  139.        the  number of clients at any given time, so your  PC
  140.        remains workable.
  141.      * Lots of security! On a directory and even file basis.
  142.        Allowing  different settings for  each  user, and  by
  143.        putting   users   into   'groups'   permitting   easy
  144.        maintenance  for large numbers of users. There's even
  145.        an  option  to allow or prohibit clients on the basis
  146.        of  their IP-number. Ideal if you want to let certain
  147.        people  roam around your computer, but you don't want
  148.        the  whole  world knocking at your door  (that is  to
  149.        say: they can knock, but they won't get in).
  150.      * A  quite  complete  implementation, and  very  strict
  151.        adherence  to the FTP standard (found in document RFC
  152.        959).  Supports the 'passive' command  PASV.  This is
  153.        needed  by WWW-browsers that use proxy agents for FTP
  154.        transfer   (something  required  when   there   is  a
  155.        'firewall').  Another  feature  is  that  'Anonymous'
  156.        users  always  see the root directory ('\')  as their
  157.        login  directory. This, again, is needed by some WWW-
  158.        browsers to make FTP transfers work.
  159.      * Easy to setup and maintain. Everything is  accessible
  160.        through  menus,  and  for  automated  maintenance the
  161.        settings are stored in an .INI file of simple format.
  162.      * It  is fast! The file transfer speed you'll  get will
  163.        be  very  close  to the maximum your TCP/IP  stack is
  164.        capable  of   (well, assuming your FTP  client  is at
  165.        least as fast of course).
  166.      * A very cute icon!
  167.      * Compared to the commercial implementations, Serv-U is
  168.        dirt cheap!
  169.  
  170. If  you didn't register this program, then you're looking at
  171. the  try-out  version  of  Serv-U.  This  version  is  fully
  172. functional,  there  is  absolutely no  difference  with  the
  173. registered version. But (yes, there had to be a 'but') after
  174. a  little over 30 days it will stop to work. Counting starts
  175. the  first  time you run the program. I warn you beforehand:
  176. re-installing it will not help you!
  177.  
  178. Before  I  forget  it:  Thanks, Lars,  for  testing  Serv-U,
  179. thanks, Kyle, the best bug buster of all, and thanks,  Brad,
  180. for  turning my attempt at English into the real thing. And,
  181. Alun,  I  hope I didn't shock you too much by bringing  this
  182. program out. You can't say I didn't warn you though . . .
  183.  
  184. OK,  enough  sales  talk.  Let's continue  with  the  actual
  185. documentation. First thing will be how to install Serv-U  to
  186. get you in business.
  187.  
  188.  
  189.  
  190. 1. MAKING IT WORK - INSTALLATION
  191. ================================
  192.  
  193. You're  eager  to get things going, but a little  afraid  of
  194. what  lies  ahead. Never fear, it couldn't  be  simpler.  So
  195. let's get started!
  196.  
  197.  
  198. 1.1 INSTALLATION
  199.  
  200. Nothing more simple than to install Serv-U: just unzip it in
  201. the directory of your choice and run it. There is no need to
  202. change your 'PATH' or put anything in other directories.
  203.  
  204. Serv-U comes with the following files:
  205.  
  206.      SERV-U.EXE          - The FTP-server executable itself
  207.      SERV-U.DOC          - The   documentation   in  MS-Word
  208.                            format
  209.      SERV-U.TXT          - The documentation in ASCII format
  210.      README.TXT          - Something you have to read
  211.      BWCC.DLL            - The Borland Custom Control library
  212.                            that creates the 3D-look
  213.      REGISTER.TXT        - A registration form in ASCII format
  214.  
  215. When  Serv-U  is started for the first time, it creates  the
  216. file:
  217.  
  218.      SERV-U.INI          - File containing  all settings and
  219.                            user information
  220.  
  221. The  only finer point you might want to pay attention to  is
  222. whether  or not you already have the file BWCC.DLL  in  your
  223. Windows directory. If so, you can delete the one in the Serv-
  224. U  directory, but make sure it is the same version  (compare
  225. the sizes)!
  226.  
  227. When  you  run Serv-U for the first time there  will  be  no
  228. users  and  access  will be restricted. To  change  this  go
  229. through  the  'Setup'  menu items and put  in  your  heart's
  230. desires.  I  advise you to take a look at the next  chapter,
  231. explaining  the various menus, since the security  setup  is
  232. simple but not totally intuitive (sorry for that, but. . .).
  233.  
  234. For network use with a single executable shared between many
  235. users  that need their own settings, the program  looks  for
  236. the existence of an environment variable with the name SERV-
  237. U. If this variable exists, it should be set to the path for
  238. SERV-U.INI.  The program will then use this instead  of  the
  239. default program directory.
  240.  
  241.  
  242. 1.2 DE-INSTALLATION
  243.  
  244. It  is hard to imagine why, but if for some reason some  day
  245. you  want to get rid of Serv-U then that is just as easy  as
  246. was installing it. Just delete the whole directory where you
  247. put  it,  and that's it! Serv-U does not change  any  system
  248. files and does not place any files in other directories.
  249.  
  250.  
  251.  
  252. 2. THE GRAND TOUR - MENUS
  253. =========================
  254.  
  255. The menus and associated dialog boxes have been designed  to
  256. be  as simple as I could make them while still providing the
  257. needed  features  and flexibility. The next paragraphs  take
  258. you  on a grand tour through all of them. I highly recommend
  259. you to take a closer look at the part about setting up users
  260. and security under 'Setup - Users/Groups'.
  261.  
  262.  
  263. 2.1 THE FILE MENU
  264.  
  265. The 'Logging' option can be checked to enable logging of FTP
  266. events  to  a file. If unchecked, logging will be to  screen
  267. only.  This option is only available if a logfile  has  been
  268. specified  under  the  'Setup  -  FTP-Server'  menu  choice.
  269. Changing logging through the 'File - Logging' menu will only
  270. affect  the current session. The changes are not  saved  and
  271. the  next  time you start Serv-U logging will  again  be  as
  272. specified in 'Setup - FTP-Server'.
  273.  
  274. The other option is 'Exit', guess what that does . . .
  275.  
  276.  
  277. 2.2 THE EDIT MENU
  278.  
  279. You'll  find  only  one  option here:  'Copy'.  This  copies
  280. selected text from the Serv-U logscreen to the clipboard.
  281.  
  282.  
  283. 2.3 THE SETUP MENU
  284.  
  285. This  is  where the fun starts. Almost everything concerning
  286. the  functioning  of Serv-U can be set through  the  'Setup'
  287. menu.  There  are two exceptions: First, if  you  insist  on
  288. allowing access for a user without a password, and,  second,
  289. if you want to make the Serv-U program invisible; meaning it
  290. will  not show up in the list of the task manager.  In  both
  291. cases you'll have to edit the SERV-U.INI file directly.  For
  292. more  information on how to do this, take  a  look  at   the
  293. 'Internals' chapter.
  294.  
  295. The  dialog  boxes where you can fill in your settings  have
  296. not  been made totally bullet proof. It is entirely possible
  297. to  enter  nonsense in certain items and  the  program  will
  298. accept  it  (like  path names that don't  exist,  etc.).  Of
  299. course,  things  might not work exactly as you're  expecting
  300. them  to, but it should not cause the program to crash.  The
  301. bottom  line  is that it is your responsibility  to  provide
  302. settings that make sense.
  303.  
  304. Now,  let's  continue  with  the 'Setup'  menu  choices  and
  305. associated dialog boxes.
  306.  
  307. The 'Setup - FTP-Server' option
  308. -------------------------------
  309. This  menu  choice will lead you to a dialog box  containing
  310. matters  directly related to the workings of the FTP  server
  311. itself.
  312. The  first  item  is 'FTP port number'.  This  is  the  (You
  313. guessed it!) port number that the server will listen on  for
  314. incoming  FTP clients. The default is number 21, but  you're
  315. free  to  fill in anything you want, provided  it  does  not
  316. conflict with other network programs. Of course, the rest of
  317. the  world  expects a FTP server to listen on port  21,  but
  318. changing to another number is one great way of insuring that
  319. only  you  and  some selected friends will know  about  your
  320. server. One fun choice is to set this to port number 23  and
  321. then use a telnet program  to 'telnet' to your own PC.
  322.  
  323. The  next  item is the 'Maximum number of users'. With  this
  324. you  set  the  maximum number of simultaneous users  at  any
  325. given  moment.  Setting it to 0 will  not  allow  anyone  to
  326. enter, leaving it blank will allow an unlimited number,  or,
  327. more precisely, until the PC runs out of network sockets. If
  328. you  need  your PC for regular work as well as being  a  FTP
  329. server,  it  is  probably wise to set a  maximum  so  normal
  330. operations  will  not be slowed down too  much  by  clients.
  331. Likewise, 'Maximum number of anonymous' limits the number of
  332. 'Anonymous' users at any given moment. If 'Maximum number of
  333. users'  is specified, then this will limit the total  number
  334. of  users,  both  regular and anonymous,  even  if  'Maximum
  335. number of anonymous' is set to a larger number.
  336.  
  337. If you would like to leave your PC wide open for the rest of
  338. the  world  you can uncheck the 'Enable security'  checkbox.
  339. But  beware:  DISABLING SECURITY WILL ALLOW ANYBODY  ON  THE
  340. NETWORK  TO DELETE/CHANGE/COPY EVERYTHING ON YOUR PC!!!  The
  341. only  reason  I put this option in is to make  it  easy  for
  342. people  that have their own local network and don't want  to
  343. mess with users and passwords. By default this option is, of
  344. course, checked.
  345.  
  346. The next two items deal with logging. The first one, 'Enable
  347. logging  to file' switches writing to a logfile on  or  off.
  348. The  second item, 'Logfile' is meant for entering  the  path
  349. and file name of a file to write all the log messages to. Of
  350. course, logging will only work when a valid logfile name  is
  351. entered.  Log  messages  will always  be  shown  on  screen,
  352. regardless of these settings.
  353.  
  354. The last item in this dialog box is 'Registration code'.  If
  355. you decide to register this program, I will provide you with
  356. a  registration code. This is a combination of 14 characters
  357. and  it should be entered exactly as provided. Uppercase and
  358. lowercase  should  be  preserved and beware  of  points  and
  359. commas, as they can be part of the code. Once a registration
  360. code  is  entered  Serv-U will continue to  work  after  the
  361. initial 30 day trial period.
  362.  
  363. The 'Setup - IP-Access' option
  364. ------------------------------
  365. This  dialog  box provides the means to restrict  access  to
  366. your FTP server to certain IP-numbers. If  for example,  you
  367. work  at a university and only want your faculty members  to
  368. be able to access the server, then this is a great way to do
  369. it.  In  the  upper left corner of the dialog  box  you  can
  370. choose  which type of rules you want to specify:  'Deny'  or
  371. 'Allow' rules. The deny rules decide who should be kept out,
  372. the  allow rules indicate who should be welcomed. THE  ORDER
  373. OF  THE  RULES  IS  IMPORTANT! When a  client  contacts  the
  374. server, the deny rules are looked at FROM TOP TO BOTTOM.  If
  375. no  matching  rule is found, the allow rules are  evaluated,
  376. again  from top to bottom. The first matching rule  applies,
  377. and  evaluation is stopped. If there are no IP-access  rules
  378. everybody can enter the FTP server. As soon as there is  one
  379. rule,  only  those  clients that pass  the  rule  check  are
  380. allowed to enter.
  381.  
  382. You  can type in a new rule in the 'Rule' edit and then  use
  383. the  'Add' button to add the rule to the list. The  'Remove'
  384. button  will  remove the currently selected  rule  from  the
  385. list.  To  change the order of the rules you have to  select
  386. one  by clicking the mouse on it, and then use the 'Up'  and
  387. 'Down' buttons to move it around.
  388.  
  389. Rules  are  nothing more than IP-numbers or  ranges  of  IP-
  390. numbers. There are two special characters: the star '*'  and
  391. the  hyphen '-'. A star functions as a wildcard for checking
  392. the  number. Any number will match that section of the  rule
  393. if  it  is  a star. The hyphen is used to denote a range  of
  394. numbers. Simply separate the starting and ending values by a
  395. hyphen. For example, say all IP-numbers in your company look
  396. like  134.56.34.xxx with 'xxx' being any  number.  Now,  you
  397. want  to restrict access to your FTP server to other members
  398. of  your  company  only. The way to do it is  to  create  an
  399. 'Allow' rule that looks like this:
  400.  
  401.      134.56.34.*
  402.  
  403. That's  simple,  isn't it! Likewise, if you  know  that  the
  404. competition has IP-numbers in the range 168.76.xxx.xxx,  you
  405. can keep them out of your server with the 'Deny' rule:
  406.  
  407.      168.76.*.*
  408.  
  409. Now,  you  need  to  share some of your  files  with  a  few
  410. collegues,  and management in your company is too  cheap  to
  411. install  a local network. You find out that their PC's  have
  412. IP-numbers  134.56.34.128, 134.56.34.129 and  134.56.34.130.
  413. You  could of course make three 'Allow' rules, each with one
  414. of  these  numbers. A faster way to do this  is  to  make  a
  415. single rule like this:
  416.  
  417.      134.56.34.128-130
  418.  
  419. The  special characters '*' and '-' don't need to be at  the
  420. end of the IP-numbers, any place will do. The rule 221.*.76-
  421. 154.89  is  perfectly OK. I wouldn't know  when  you'd  need
  422. this,  but,  hey,  the world is a strange  place!  Remember,
  423. order  is  important  and deny rules  are  always  evaluated
  424. before the allow rules. Experiment a bit, and you'll get the
  425. hang of it.
  426.  
  427. The 'Setup - Signon/Signoff' option
  428. -----------------------------------
  429. Your  FTP-server can display a welcome message every time  a
  430. user  connects  to  it. This can be very useful  to  provide
  431. users with information about your FTP server, like where  to
  432. find  games, or 'Serious Software'. Likewise, you might want
  433. to  say good-bye to them when they leave, or remind them  to
  434. send  that  check . . . The way to do this is by entering  a
  435. text in the 'Signon/Signoff' dialog box.
  436. There  are  a few special characters that you can  enter  in
  437. your signon/signoff text which get expanded while being sent
  438. to a client. These are:
  439.  
  440.      %t   - gets expanded to the current time on your PC
  441.      %d   - gets expanded to the current date on your PC
  442.      %u   - turns  into  the  current number of Serv-U users
  443.             logged in
  444.  
  445. So, you could use the following signon text:
  446.  
  447.      Welcome, it is %t on %d, and you are user number %u
  448.  
  449. I'm  sure you'll figure out by yourself what this will  look
  450. like  to  the user . . . If you have ideas for other  useful
  451. special characters, let me know about it!
  452.  
  453. The 'Setup - Users' option
  454. --------------------------
  455. Unless you switched off all security, you are going to  have
  456. to  set up users. And, you guessed it, this is the place  to
  457. do so!
  458. Upon  choosing this option a dialog box is presented to you.
  459. It  contains  a  list  of all known  users.  To  change  the
  460. settings  for  a certain user, just click on  the  name  and
  461. click 'Edit' (or just double-click on the name). Now, if you
  462. just started this server for the first time there will be no
  463. names,  short  of Divine Intervention. Never mind,  just  go
  464. ahead  and click 'Edit'. You'll be presented with  an  empty
  465. dialog  box  containing  entries for everything  you  always
  466. wanted to set for a user.
  467. The  next thing is important, so pay attention: You can fill
  468. in or change any name in the 'User name' field. If this name
  469. does  not  exist it will be added to the list of  users.  If
  470. this name exists, the settings for this user will be changed
  471. to  the ones in the dialog box. So, if you double-clicked on
  472. user  'James'  and  then  go  on  to  set  his  password  to
  473. Qlightbulb' and you change the user name to another of  your
  474. users, 'Tanya', then Tanya is going to be mighty upset  when
  475. she  tries  to enter your FTP server! James will  of  course
  476. have to remember his old password, since nothing changed for
  477. him.  This  way  of dealing with users might strike  you  as
  478. somewhat  strange. The advantage of it is that you can  take
  479. an  existing user and, by making only the few needed changes
  480. turn it into a new user.
  481.  
  482. Now  let's take a closer look at the various fields  in  the
  483. 'Edit  User'  dialog box. I've dealt with  the  'User  name'
  484. field, so this brings us to 'Group name'. Every user can  be
  485. part  of a group. The convenience in making users part of  a
  486. group is that you can leave common settings for all users of
  487. a particular group blank and just fill them out in the 'Edit
  488. Group'  dialog  box.  This goes for all settings,  including
  489. password, home directory and path access rules. To  overrule
  490. a  certain  group setting, simply provide one for the  user.
  491. For  example,  you're the Pentagon system administrator  and
  492. want to create FTP access for everybody in case they are  on
  493. field trips. So, you hook up this old PC to the net, install
  494. Serv-U  and register it (hypothetical situation).  Then  you
  495. proceed to create a group 'StarWars'. Now you go on  to  set
  496. the  password  for  this group, 'RonaldR',  and  their  home
  497. directory    (all   their   files   are   shared    anyway),
  498. 'y:\super\secret\starwars'. You fill  in  some  access  path
  499. rules  as well, and you're all set: The only thing  left  is
  500. entering the user names, you don't have to provide any other
  501. information  per  user.  A 10 minute  job.  Now  there's  an
  502. occasional guest user, 'BillyC'. You don't want him  to  get
  503. into  certain directories, so you make him a member  of  the
  504. group but specify those directories in his access path rules
  505. with 'no access', and you're all done.
  506.  
  507. We  did  get  ahead  of ourselves in the discussion  of  the
  508. various  fields,  so  let me back up a bit.  The  'Password'
  509. field  shows stars ('*****') when entering a password. Don't
  510. worry, this is only to protect you from prying eyes. Also if
  511. you're  editing an existing user who has a password, nothing
  512. will be shown here, but the password is still there. To keep
  513. the existing password for a user: don't edit this field! The
  514. passwords  are  stored encrypted using  UNIX  'crypt'.  This
  515. algorithm works like a sausage machine: you put in a pig  on
  516. one  side  and  turn the crank, out comes the sausage.  But,
  517. pushing  in  the  sausage while turning the crank  backwards
  518. will  not get you a pig! It is quite secure, I wouldn't know
  519. of  a way to get the plain text password back (the NSA might
  520. though).
  521.  
  522. The  'Home directory' field is for the user's home directory
  523. (to kick in an open door). This is the place where he or she
  524. is  put immediately after logging in. Each user needs a home
  525. directory,  without one the server will not  permit  logging
  526. in.  Of course, if a user is part of a group, and this group
  527. has a home directory you don't have to specify one here. You
  528. might  want to, if this user needs a different one from  the
  529. rest of the group.
  530.  
  531. This  brings  us  to the last part of this dialog  box,  the
  532. 'File/Directory  access' rule list.  This  list  contains  a
  533. number  of  paths  with access information coupled  to  each
  534. path.  Access to the PC is only allowed according  to  these
  535. paths  and  their  access information. No access  paths,  no
  536. access! So, there is one path you might always want to be in
  537. the list: the user's home directory.
  538. When  a  user  executes a FTP command  concerning  files  or
  539. directories, the user's path list is checked to see  if  the
  540. command  should be allowed to proceed. The list is evaluated
  541. FROM TOP TO BOTTOM! SO THE ORDER OF THE PATH ACCESS RULES IS
  542. IMPORTANT!!!  There  are  five  different  types  of  access
  543. information  that  can be set for each path.  The  first  is
  544. 'Read'  access, this allows files to be copied from  the  PC
  545. using  the  FTP  'get'  command.  Next  is  'Write'  access,
  546. allowing files to be copied to the PC using 'put',  but  not
  547. changed,  deleted,  or renamed. Third  is  'Delete'  access,
  548. allowing  the user to change files, rename, or delete  them.
  549. Having  'Delete' access automatically includes write access.
  550. The  last  two items deal with directories. 'Create'  access
  551. lets  the user create new directories at this path. 'Delete'
  552. lets  the  user  delete directories.  To  make  a  directory
  553. listing any one of these rights is sufficient for a path. If
  554. none  of  the  rights have been granted for a certain  path,
  555. then the user has no access what-so-ever to this path.
  556. The rights of a certain path are valid not only for the path
  557. itself, but also for all subdirectories of it. If you  don't
  558. want  this to happen for a certain subdirectory you have  to
  559. specify  this directory with the desired rights  before  its
  560. parent in the list of paths.
  561.  
  562. Since  one  example can say more than a thousand  words,  or
  563. something  along these lines, let's work through  a  typical
  564. situation. Assume you want to setup an 'Anonymous' FTP site.
  565. This  needs a directory tree with all the goodies the  users
  566. might  want, for which they need read access. You also  need
  567. an  upload directory where users can upload new goodies, but
  568. you  don't  want others to be able to immediately get  their
  569. fingers  on  it, since you want to check for viruses  first.
  570. So, this directory needs write but no read access. We decide
  571. to  put everything on the big network drive, 'Y:', under the
  572. 'ANONFTP'  directory. We also create the 'UPLOAD'  directory
  573. here  for  uploads.  In  Serv-U we  would  create  the  user
  574. 'Anonymous'  with the following access path  rules  (and  in
  575. this order):
  576.  
  577.      Y:\ANONFTP\UPLOAD   - write rights
  578.      Y:\ANONFTP          - read rights
  579.  
  580. Reversing the rules will not work: If a user would write  to
  581. the  upload  directory  the security  mechanism  will  check
  582. against Y:\ANONFTP and conclude that UPLOAD is a subdir,  so
  583. the rule applies, and the rule grants only read access.
  584. If  the  drive letter is left out of a path, it applies  for
  585. all  drives. So, a fast way to get full access to all  files
  586. on all drives is:
  587.  
  588.       \                  - read, write, delete,  create  dir
  589.                            and delete dir rights
  590.  
  591. Now,   the   same  mechanism  that  determines   access   to
  592. directories also applies to files. It is possible  to  grant
  593. access to specific files on a per-file basis. Lets take  the
  594. previous example about the anonymous FTP server. We want  to
  595. put a file 'SECRET' in the ANONFTP directory, but nobody  is
  596. allowed  to  read  it of course. So, our access  paths  list
  597. would look like this:
  598.  
  599.      Y:\ANONFTP\SECRET   - no rights
  600.      Y:\ANONFTP\UPLOAD   - write rights
  601.      Y:\ANONFTP          - read rights
  602.  
  603. Again,  the  order of the paths is important! The  directory
  604. access rights do not have any meaning for files.
  605. The  buttons  speak for themselves, so I'll  not  waste  any
  606. bytes on them.
  607.  
  608. There  are two special user names, although in setting  them
  609. up  they are dealt with exactly the same as any other  user.
  610. These are the user names 'Anonymous' and 'ALL'.
  611. We  already came across 'Anonymous', it allows users to  log
  612. in  without a password. The FTP server asks for their E-mail
  613. address instead and logs this. The 'Password' section in the
  614. 'Setup  Users' dialog box is ignored for this user name.  If
  615. an  anonymous user logs in, he will not see the  whole  file
  616. structure.  To him everything will appear to be relative  to
  617. the  home  directory. So, to abuse our previous example  yet
  618. another time: After logging in he will be put in Y:\ANONFTP,
  619. but  if  he asks for the current path the server will answer
  620. '\'. All actions concerning files will, also, be relative to
  621. his  home  directory. The reason for making it this  way  is
  622. that  certain  World  Wide Web browsers  that  log  into  an
  623. anonymous  FTP  server will execute a 'change directory'  to
  624. '\' immediately thereafter. They get mighty confused if this
  625. is  refused, so by making their home directory '\'  this  is
  626. avoided.
  627. The  other  special user name is 'ALL'. Now where does  this
  628. tie  in?  Well,  every action requiring  security  clearance
  629. (checking  a password during login, reading, writing,  etc.)
  630. is  first  checked against the settings for  the  particular
  631. user. If no appropriate setting is found there, and the user
  632. belongs  to  some group, the group settings are checked.  If
  633. still  no corresponding setting is found, the user 'ALL'  is
  634. consulted  (if it exists). So 'ALL' works as a  blanket  for
  635. all  users,  providing the most common settings. Of  course,
  636. this  also provides a potentially big security hole,  so  be
  637. careful!
  638.  
  639. The 'Setup - Groups'  option
  640. ----------------------------
  641. Choosing this presents you with exactly the same dialog  box
  642. as  the 'Setup - Users' section. The only difference is that
  643. you  cannot fill in a user name. Everything works  the  same
  644. way  too,  so I'll let you figure it out. Of course,  you're
  645. not dealing with users here but with group names.
  646.  
  647.  
  648. 2.4 THE HELP MENU
  649.  
  650. This  menu choice is still a bit underdeveloped, it has only
  651. the  'About' item. This does however present you with a very
  652. beautiful 'about' box, thus more than making up for the lack
  653. in other areas.
  654.  
  655.  
  656. 2.5 THE LOGFILE AND SCREEN
  657.  
  658. Although  they are strictly speaking not part of the  menus,
  659. this  is  a  convenient place to discuss the format  of  the
  660. logfile and screen messages.
  661. Messages  are always logged to the Serv-U window, regardless
  662. of  the logfile settings. There is no difference between the
  663. messages  on  screen and the ones in the  logfile,  although
  664. some  things are only shown on screen. The latter are server
  665. and  program  related matters, like version  number,  server
  666. going on/off-line etc.
  667.  
  668. Log  messages  always have the same layout. The  reason  for
  669. using  such a strict format is to make it easier  to  search
  670. for  specific  messages or certain types  of  messages.  The
  671. format is as shown below, in stylized form:
  672.  
  673.      [n] DATE TIME - (xxxx) MESSAGE
  674.  
  675. The first number, 'n', indicates the type of message that is
  676. being logged. Currently there are five different categories:
  677.  
  678.      1    - system messages (problems etc.)
  679.      2    - FTP commands (not used yet)
  680.      3    - GET file transfers
  681.      4    - PUT file transfers
  682.      5    - security related events (users logging in etc.)
  683.  
  684. The  second  number, 'xxxx', is a unique ID  assigned  to  a
  685. client  the  moment  the connection  is  made.  All  further
  686. messages  concerning that client will use the  same  number.
  687. Again,  this  was done to make it easy to find  back  events
  688. using the 'search' facilities of every editor.
  689.  
  690.  
  691.  
  692. 3. THE INNER WORKINGS
  693. =====================
  694.  
  695. Before  I  go on to describe the settings of the  SERV-U.INI
  696. file  I want to spend a few words describing how Serv-U  was
  697. made and how it goes about its job.
  698.  
  699.  
  700. 3.1 SERV-U INTERNALS
  701.  
  702. The program was made using Borland C++ version 3.1. To check
  703. for  shaky  pointers and catch all those resource leaks  the
  704. program Bounds Checker version 2.1 from Nu-Mega was used.  I
  705. think  no  serious Windows programmer should be without  the
  706. latter, much recommended!
  707. This  whole  project  started about a year  ago  after  much
  708. disappointment with the existing FTP servers for WinSock. In
  709. its  current version it consists of just a little over 10000
  710. lines  of  C++ code, divided into 16 C++ classes. The  whole
  711. program was constructed from scratch, not using any existing
  712. FTP   server  code,  and  is  tailored  to  MS-Windows   and
  713. WinSock's.
  714. Internally, everything is very much compartmentalized, using
  715. a  different class for different partial tasks. There  is  a
  716. WinSock   class  library,  providing  hi-level   access   to
  717. WinSockets  and hiding all the nasty parts of  dealing  with
  718. them.  It  uses  100% asynchronous WinSock  functions  (also
  719. called 'non-blocking' functions) thus avoiding problems with
  720. multiple active sockets for a single task and re-entry  (let
  721. me  know  if  you're interested in this class  library,  I'm
  722. thinking of selling it in souce code format). There is a FTP-
  723. manager  class,  taking care of listening for  clients,  and
  724. setting  up  instances of the FTP-command interpreter  class
  725. when this happens. The latter does the actual interpretation
  726. of  the  FTP  commands, talking to the  security  class  for
  727. clearance  and  the  WinSock class for communications.  Then
  728. there are some utility-like classes, like those dealing with
  729. setup  and  logging. By having all these  compartments  that
  730. handle  very well defined tasks I hope to be able to  easily
  731. extend  this  FTP  server  and  fix  those  (hopefully  few)
  732. remaining bugs quickly!
  733.  
  734.  
  735. 3.2 THE SERV-U.INI FILE
  736.  
  737. All  the  settings, for the server, users,  and  groups  are
  738. stored  in  a  single  file in text  format.  This  file  is
  739. normally   named  SERV-U.INI.  Unless  this   is   otherwise
  740. indicated,  something I'll get to in a  moment,  the  Serv-U
  741. program  looks  for this file in the program  directory.  To
  742. indicated  that  SERV-U.INI  should  be  found  in   another
  743. directory, an environment variable SERV-U should be  set  to
  744. the   desired   path.  This  can  be  useful   for   network
  745. installations that use a single copy of the program but need
  746. separate .INI files.
  747. To  go  over  all the items that can appear in SERV-U.INI  I
  748. will show you an invented setup file:
  749.  
  750.      [GLOBAL]
  751.      Security=TRUE
  752.      PortNr=23
  753.      MaxNrUsers=5
  754.      MaxNrAnonymous=3
  755.      Invisible=TRUE
  756.      Logfile=c:\serv-u\logfile.txt
  757.      Logging=YES
  758.      Authorization=JK2S%FgdfsdEvG
  759.      Window=100,100,400,300
  760.      
  761.      [SIGNONOFF]
  762.      SignOn1="Welcome to Robby's FTP-Server!"
  763.      SignOn2="It is %t local time on %d and you are user nr.
  764.      %u"
  765.      SignOff1="Thanks for logging in!"
  766.      SignOff2="Hope to see you again soon . . ."
  767.      
  768.      [IP-ACCESS]
  769.      Bounce1=132.68.175.201
  770.      Bounce2=223.*.*.*
  771.      Allow1=132.68.176.53
  772.      Allow2=132.68.175.*
  773.      Allow3=101.43.23.30-40
  774.      
  775.      [USER=Rob]
  776.      HomeDir=c:\
  777.      Password=RdfgSff$#Ffr@#d
  778.      Group=System
  779.      Access1=\,RWDCM
  780.      
  781.      [USER=Anonymous]
  782.      HomeDir=d:\anonftp
  783.      Access1=d:\anonftp\upload,W
  784.      Access2=d:\anonftp,R
  785.      
  786.      [USER=ALL]
  787.      HomeDir=y:\
  788.      Access1=y:\,R
  789.      
  790.      [GROUP=SYSTEM]
  791.      Access1=c:\system,RWDCM
  792.      Access2=d:\,RWDCM
  793.      Access3=y:\novell,RWD
  794.      
  795. All  but  three  of these settings can be  changed  and  set
  796. interactively through the 'Setup' menus. The exceptions  are
  797. the  entries for 'Invisible' and 'Window', and if you desire
  798. a  user to really have no password the entry 'Password=' has
  799. to be set manually for that user.
  800. The  following  paragraphs will describe  each  section  and
  801. entry in more detail.
  802.  
  803. [GLOBAL]
  804. All  the settings related to the Serv-U program itself, i.e.
  805. the  functioning of the FTP server and system functions, are
  806. found in the '[Global]' section.
  807. If security should not be enforced, the 'Security' entry can
  808. be  set  to  FALSE or 0. Doing so will leave the FTP  server
  809. wide  open  to everybody!!! Default value for 'Security'  is
  810. TRUE.
  811. The  'PortNr' entry determines the IP port that  the  server
  812. will listen on. Default value is 21.
  813. To  limit  the  maximum  number of  simultaneous  users  the
  814. 'MaxNrUsers' entry should be set to the desired  number.  No
  815. entry  or a negative number results in no maximum, only  the
  816. number  of available sockets will limit the number of  users
  817. in  that case. Similarly, the 'MaxNrAnonymous' entry  limits
  818. the  maximum number of 'Anonymous' users. The value put here
  819. is  only  meaningful  if  it is smaller  than  that  of  the
  820. 'MaxNrUsers' entry.
  821. For  system  managers that don't want their  users  to  mess
  822. around with the server settings, it is possible to make Serv-
  823. U  invisible by setting the 'Invisible' entry to TRUE, 1  or
  824. YES  and put the Serv-U program in the 'startup' group. When
  825. this is done the server will not show up in the task manager
  826. list.  One consequence is that there is no way to  stop  the
  827. program  short of exiting Windows. Default is  NO  for  this
  828. entry.
  829. The  'LogFile' entry should specify a full path and name for
  830. a  logfile  if  logging  is desired.  There  is  no  default
  831. logfile. To actually switch logging on and off the 'Logging'
  832. entry  can  be set to ON or TRUE, or OFF or FALSE. Switching
  833. logging  ON  will  only work if a logfile is  specified.  By
  834. default 'Logging' is set to ON.
  835. The   'Authorization'  entry  is  used  for   entering   the
  836. registration  code.  You get this code  after  registration.
  837. Default it has no value and for evaluation of the program it
  838. should be left blank.
  839. The  last entry is 'Window' and this is set by Serv-U  every
  840. time  the  program is stopped. It contains the last position
  841. and   size   of   the   program  window,   in   the   format
  842. 'top,left,width,height'
  843.  
  844. [SIGNONOFF]
  845. This  section contains the messages that are displayed after
  846. a   user  contacts  the  FTP  server  and  just  before   he
  847. disconnects. Every line has a separate entry with  a  number
  848. at the end, denoting the order. The signon message is put in
  849. 'SignOnxx'  entries  (with  xx the  line  number),  and  the
  850. signoff message is put in 'SignOffxx'.
  851. There are three special character combinations recognized by
  852. Serv-U  and they are expanded to their actual values when  a
  853. user logs on or off. These are:
  854.  
  855.      %t   = current time
  856.      %d   = current date
  857.      %u   = current number of users that are logged in
  858.  
  859. A  tip:  Keep  the  number of lines  and  the  their  length
  860. limited.  Most  FTP  clients will  mess  up  lines  over  80
  861. characters,  and  since a FTP reply code is  tagged  to  the
  862. beginning of these lines before they are sent, it is wise to
  863. keep them to less then 75 characters.
  864.  
  865. [IP-ACCESS]
  866. This  section  determines which client  IP-numbers  will  be
  867. allowed  access  to Serv-U. There are two  kinds  of  rules:
  868. Those  that  refuse access in the form of 'Bounce'  entries,
  869. and  those that grant access using 'Allow' entries. If  this
  870. section  doesn't  exist, or no entries are  found  then  all
  871. clients  are allowed to contact the server. The  reverse  is
  872. also  true,  if  there is even a single entry  ('Bounce'  or
  873. 'Allow') then only those clients will be allowed to  contact
  874. the  server  that  pass the rule. All entries  are  numbered
  875. ('Allow1',  'Allow2' etc.) and they are evaluated  according
  876. to  their  number  from  first to last.  Numbers  should  be
  877. consecutive.  The  'Bounce' rules are evaluated  before  the
  878. 'Allow' rules.
  879.  
  880. The IP-number of the client is matched section by section to
  881. each  rule until a match is found. If the matching  rule  is
  882. one of the 'Bounce' ones, the client is disconnected. Is  it
  883. an  'Allow' rule then he can proceed. The rules can be exact
  884. IP-numbers, or contain special characters. There are two  of
  885. those:
  886.  
  887.      *    = wildcard, match any number
  888.      -    = denotes a range
  889.  
  890. A  quick example: The rule '132.*.76.48-89' will allow entry
  891. to  clients with an IP-address starting with 132, the second
  892. section can be anything (0..255), the third must be  76  and
  893. the  last  section  should  be between  48  and  89  (limits
  894. included).
  895.  
  896. [USER='Name']
  897. The  information  about a user is stored  in  this  section,
  898. 'Name'  stands for the user's name. Each user has a separate
  899. section.  It  contains  items  like  information  needed  to
  900. authenticate a user during login, and rules determining what
  901. this  user  is  allowed to access. The Serv-U  program  will
  902. first  check  this  section  for  a  regular  user.  If   no
  903. applicable information is found and the user is a member  of
  904. a group, the group is addressed for the same information. If
  905. the  result of this is still undetermined, the special  user
  906. name 'ALL' is searched.
  907. Now  to  the entries that can be found in this section.  The
  908. identity  of  a user is verified by comparing his  password,
  909. after encryption, with the one in the 'Password' entry.  The
  910. UNIX  'crypt()' command is used to code the passwords.  This
  911. makes it possible to extract users with their password  from
  912. the  PASSWD file of a UNIX system, the same passwords should
  913. work  on both systems. Unfortunately, there is not a  single
  914. standard for password encryption on UNIX systems these days.
  915. Serv-U uses the most common scheme, but this might not  work
  916. for your system.
  917. If  the  password matches the home directory of the user  is
  918. taken from the 'HomeDir' entry. This should always be a full
  919. path name, including drive letter!
  920. To  make  a  user a member of a certain group,  the  'Group'
  921. entry  can be used. All information needed and not found  in
  922. the  user's  section; password, home dir and  file/directory
  923. access, are then  looked for in the group's section.
  924. Information about file and directory access for  a  user  is
  925. stored  in  the 'Access' entries. Each of these is numbered,
  926. and  access information is checked in order: first comparing
  927. it  to  the  first rule, then the second, etc. The numbering
  928. must  be consecutive. Access rules start with a path or file
  929. name.  These  paths are usually full names, including  drive
  930. letter.  If the drive letter is missing, they apply  to  all
  931. drives. Also, access rules apply not only to the exact path,
  932. but to all subdirectories as well. If different settings are
  933. needed  for a subdirectory, than a rule with that  directory
  934. should  appear before its parent, i.e. with a lesser number.
  935. The  path in an access rule is followed by a comma  and  the
  936. access information itself. This can be a combination  of  up
  937. to five different characters:
  938.  
  939.      R    = read access to files
  940.      W    = write access to files
  941.      M    = modify access to files (implies write access)
  942.      C    = right to create subdirectories
  943.      D    = right to delete subdirectories
  944.  
  945. It is entirely possible to have no access information at all
  946. (only  a  path). This means that the user will not have  any
  947. access to that path. For a user to be able to list the files
  948. in  a  directory he needs at least one of these five rights,
  949. any  will do. Another thing to realize is that write  access
  950. to a file does not imply read access! Then finally, the path
  951. in  an access rule does not have to point to a directory. It
  952. is  also possible to specify a filename. Of course, the  'C'
  953. and 'D' rights will not have any meaning then.
  954.  
  955. There are two special user names: 'Anonymous' and 'ALL'.  If
  956. there  is  an user 'Anonymous', it will be possible  to  log
  957. into the server without a password. Instead, Serv-U will ask
  958. for  the  users  E-mail address and log this.  Most  of  the
  959. regular  entries  apply  for  'Anonymous'  as  well,  except
  960. 'Password'  and  'Group', these are ignored.  In  fact,  for
  961. anonymous users the sections for groups and 'ALL' are  never
  962. searched.
  963.  
  964. The  user 'ALL' is searched if no appropriate rule is  found
  965. in  a user's or his group's entry. It can contain any of the
  966. regular entries.
  967.  
  968. [GROUP='Name']
  969. These sections contain the group info. The entries here  are
  970. exactly  the  same  as  those for a user,  except  that  the
  971. 'Group' entry has no meaning of course.
  972.  
  973.  
  974.  
  975. 4. GETTING IN TOUCH - BUGS & REGISTRATION
  976. =========================================
  977.  
  978. I'd  love to hear from you! Not only for bugs, but  also  if
  979. you  have  ideas, questions, or remarks. Please  drop  me  a
  980. line! The fastest and easiest way to do so is by E-mail.  My
  981. address is:
  982.  
  983.      RJB@eel-mail.mc.Duke.edu
  984.  
  985. Regular  mail  should work as well, but  might  take  a  bit
  986. longer. My address for this is:
  987.  
  988.      Rob Beckers
  989.      1911 Erwin Road, Apt. I
  990.      Durham, NC 27705
  991.      U.S.A.
  992.  
  993.  
  994. 4.1 REPORTING BUGS
  995.  
  996. Nothing  in  this world is perfect, least of all  me!  Alas,
  997. chances are that despite careful testing you'll still find a
  998. bug.  Please don't think others will report it, let me know!
  999. There  are  a few things I need to know in order to  improve
  1000. chances of fixing the beasty, so take note of the following:
  1001.  
  1002.    * Most  important: Can you get the same bug to appear  by
  1003.      repeating  certain actions! Please try hard, without  a
  1004.      recipe  for repeating a bug it's going to be very  hard
  1005.      to track it down.
  1006.    * What TCP/IP and WinSock stack are you using? Brand/type
  1007.      and  version number please. Also, what operating system
  1008.      (DOS  version  and  Windows  or  Windows-For-Workgroups
  1009.      version  x.xx)?  Any memory manager (QEMM  etc.),  what
  1010.      version?
  1011.    * Please indicate also if this bug is merely cosmetic  or
  1012.      of  vital  importance  for using Serv-U.  Somewhere  in
  1013.      between  is possible as well of course. By the  way,  I
  1014.      consider security related bugs very important!
  1015.    * Finally,  please give me a chance to fix a bug,  before
  1016.      you  start to shout all over the Internet how bad  this
  1017.      program is . . .
  1018.      
  1019.  
  1020. 4.2 REGISTERING SERV-U
  1021.  
  1022. If  you're happy with the performance of Serv-U, then please
  1023. make  me  happy and register this program! Just a few  words
  1024. for  those  who  are in doubt: Making this program  took  me
  1025. (very literally) several months of work, spread out over the
  1026. last year. Your registration fee is going to motivate me  to
  1027. continue  improving  Serv-U.  In  general,  registration  is
  1028. important  for shareware programs: It makes it possible  for
  1029. you  to  use  professional  quality  software  for  peanuts.
  1030. Lastly, being a biomedical engineering graduate student  I'm
  1031. not  exactly  making lots of $$'s (to put  it  mildly).  So,
  1032. those 20 bucks for registration mean a lot to me!
  1033.  
  1034. To  register,  please fill out the registration  form  below
  1035. (There  is  a  separate  one in ASCII  format  in  the  file
  1036. REGISTER.TXT.) and send it to me. Payment should be included
  1037. with  the registration form, except for Dutch customers,  to
  1038. which I'll get in a moment. The registration fee is $20  for
  1039. each  copy. Please contact me for site licenses,  I  promise
  1040. I'll  not shock you too much! The following forms of payment
  1041. are accepted, in order of preference:
  1042.  
  1043.      * By check, drawn at an American bank. The check should
  1044.        be  made  out  to  Rob Beckers (Alas,  Cat  Soft only
  1045.        exists in the mind for now).
  1046.      * By  Postal Money Order. As I  understand it, you  can
  1047.        buy  these   international  money  orders   in   most
  1048.        countries. Payment is in your own currency,  but  the
  1049.        money order should be made out for USD $20 and to Rob
  1050.        Beckers.
  1051.      * Cash, but only in US dollars and I give no guaranties
  1052.        about  safe arrival!  Please DO  NOT  send  me  other
  1053.        currencies, it would probably cost me  much  more  to
  1054.        convert  them  to $$'s than it costs you. A  trick  I
  1055.        found  useful for sending cash in envelopes: put  the
  1056.        money  in a folded sheet of paper so it doesn't shine
  1057.        through   the  envelope.  This  improves  chances  of
  1058.        arrival considerably.
  1059.  
  1060. Now for the Dutch:
  1061. Daar  ik nog steeds een Nederlandse girorekening heb is  het
  1062. mogelijk op die wijze te betalen. De prijs bedraagt f. 35,--
  1063. per  kopie.  Dit dient overgemaakt te worden op girorekening
  1064. 53.95.461 ten name van Rob Beckers, te Bunde. Vermeld s.v.p.
  1065. 'Registratie  Serv-U' zodat duidelijk  is  waarvoor  betaald
  1066. wordt. A.u.b. geen geld vanuit het buitenland overmaken! Van
  1067. die   35  blijft  zou  dan  heel  weinig  overblijven.   Het
  1068. registratieformulier gewoon naar de VS sturen  (post  of  E-
  1069. mail).
  1070.  
  1071. Next, what do you get if you register? As soon as I get your
  1072. registration  I'll send you a registration code.  This  will
  1073. enable you to use the program, even after the 30 day try-out
  1074. period.  Please let me know your E-mail address,  so  I  can
  1075. notify  you fast. In case I have your E-mail address  you'll
  1076. also  get  notified when there are updates. Once  registered
  1077. you'll get those updates for free, that is: you can use  the
  1078. same  registration code on the updates, but you'll  have  to
  1079. get  them yourself. Apart from all this you'll also get  the
  1080. nice,  warm  feeling of having contributed to  improving  my
  1081. financial status!
  1082.  
  1083. The   next  page  is  the  registration  form.   Since   the
  1084. registration code is tied to the IP-number of the  PC  where
  1085. you  want  to use Serv-U, it is imperative that you  provide
  1086. this!
  1087.  
  1088. ************************************************************
  1089.  
  1090.  
  1091. ROB BECKERS
  1092. 1911 Erwin Road, Apt I
  1093. Durham, NC 27705
  1094. U.S.A.
  1095.  
  1096.  
  1097.  
  1098.  
  1099.                     REGISTRATION FORM SERV-U
  1100.                     ========================
  1101.  
  1102.  
  1103.  
  1104.            NAME: ...........................................
  1105.  
  1106.    COMPANY NAME: ...........................................
  1107.  
  1108.         ADDRESS: ...........................................
  1109.  
  1110.                  ...........................................
  1111.  
  1112.                  ...........................................
  1113.  
  1114.    PHONE NUMBER: ...........................................
  1115.                    
  1116.  E-MAIL ADDRESS: ...........................................
  1117.                           (Internet only please)
  1118.    IP-NUMBER PC: ................. SLIP/PPP? ...............
  1119.                  (one for each copy of Serv-U)   (yes/no)
  1120.                  ...........................................
  1121.                  
  1122.                  ...........................................
  1123.  
  1124.  
  1125.  
  1126.  
  1127. Registration fee is $20 per copy. Send this order form along
  1128. with  your  payment  to:  Rob Beckers, Erwin  Road  Apt.  I,
  1129. Durham NC 27705, USA.
  1130.  
  1131. If   you  have any questions, comments or suggestions please
  1132. contact   Rob  Beckers  at  the  above  address  or   e-mail
  1133. RJB@eel-mail.mc.duke.edu. Site license prices  are  given on
  1134. request.
  1135.  
  1136. As  this software is shareware it comes 'as is', there is no
  1137. warranty  implied  or  otherwise, nor is  support  provided.
  1138. However, if you discover any bugs or problems please contact
  1139. the developer at the above e-mail address.
  1140.  
  1141.  
  1142.